// app.js
App({
  async onLaunch() {
    if (!wx.cloud) {
      console.error('请使用 2.2.3 或以上的基础库以使用云能力');
    } else {
      wx.cloud.init({
        // env 参数说明：
        //   env 参数决定接下来小程序发起的云开发调用（wx.cloud.xxx）会默认请求到哪个云环境的资源
        //   此处请填入环境 ID, 环境 ID 可打开云控制台查看
        //   如不填则使用默认环境（第一个创建的环境）
        env: 'cxcyjy-base-9glqrhvn6b32855e',
        traceUser: true,
      });
    }

    this.globalData = {
      _openid: null,
      userInfo: null,
      statusBarHeight: 0,
      navbarHeight: 0,
      typeMap: { // post表的type字段的中文名
        idea: '发起项目',
        team: '队友招募',
        case: '优秀案例'
      },
      statusMap: { // 申请状态的中文名
        pending: '等待确认',
        accepted: '已接受',
        rejected: '已拒绝'
      }
    };
    this.initNavbar();
    // 初始化在index页面的onLoad中执行
  },

  /**
   * 调用云函数获得当前用户的openid，写入globalData
   */
  updateOpenid: async function () {
    let that = this;
    // 调用login函数获得用户openid
    var res = await wx.cloud.callFunction({
      name: 'login',
      data: null
    });
    // 改写globalData并返回结果
    that.globalData._openid = res.result.openid;
    console.log('openid got:', that.globalData._openid);
    return res.result.openid;
  },

  /**
   * 根据获取的openid请求数据库检查用户是否已经注册
   * 返回的数据不包括_id和_openid字段
   * 其余字段写入globalData，如果没有数据，userInfo保持null
   */
  updateUserInfo: async function () {
    const db = wx.cloud.database();
    let that = this;
    // 检查是否已取得openid
    if (that.globalData._openid == null) {
      console.log('no openid found')
      return null;
    }
    // 请求数据库验证
    var res = await db.collection('user').where({
      _openid: that.globalData._openid
    }).field({
      _id: false,
      _openid: false
    }).get()
    console.log('userinfo got');
    // 改写globalData并返回结果
    if (res.data.length > 0) {
      that.globalData.userInfo = res.data[0];
      return res.data[0];
    } else {
      return null;
    }
  },

  initNavbar: function () {
    let that = this;
    wx.getSystemInfo({
      success: (res) => {
        that.globalData.statusBarHeight = res.statusBarHeight; // 状态栏高度
        that.globalData.navbarHeight = (res.system.toLowerCase().indexOf('ios') > -1 ? 44 : 48) - 4; // 导航栏高度
        console.log('get navbar info', that.globalData.statusBarHeight, that.globalData.navbarHeight);
      }
    });
  }
});